ホームに戻る
出典 :
Trigger クラス (System.Windows) | Microsoft Learn DataTrigger クラス (System.Windows) | Microsoft Learn EventTrigger クラス (System.Windows) | Microsoft Learn [WPF]DataTriggerを使って、ViewModelのフラグ等にバインドして、見た目を変化させる #C# - Qiita 【WPF】Binding入門5。DataTriggerの活用 | さんさめのC#ブログ
関連 :
MVVMパターン MVVM Toolkit ビヘイビア スタイル コンバーター
目次 :

トリガーとは

コントロールなどのプロパティ(依存関係プロパティ)が変化した際の動作を指定できる仕組み。 トリガーを用いることで、
といった動作が可能となる。 UIの振舞いに関わることから、ビヘイビアの一部に含まれることもある。 スタイルとして適用するのが一般的である。

コンバーターとの関連

トリガーとコンバーターは表現できる動作が類似しており、コンバーターをトリガーで代替できることも多い。 トリガーはXAML上で記述が完結するため、コンバーターよりも簡便に用いることができる。 その他、詳細は出典元を参照。

Trigger

Trigger は、コントロールが持つプロパティが変化した際の動作を規定できる。
例 : Button が無効( IsEnabled == false )ならば背景色を青に変更
<Style TargetType="{x:Type Button}"> <Setter Property="Background" Value="Red"/> <Style.Triggers> <!-- 無効状態なら背景色を青に --> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Background" Value="Blue"/> </Trigger> </Style.Triggers> </Style>
Style.Triggers 下に Trigger を定義している。 Button が無効になれば背景色が青になるが、再び有効になれば元の色(赤)に戻る。 つまり、トリガーによる変更は永続的なものではなく一時的なものである。 また、複数のプロパティの状態に基づいて変更を適用できる MultiTrigger も存在する。詳細は割愛。

DataTrigger

DataTrigger は、バインドされたデータが変化した際の動作を規定できる。
例 : Button の Name プロパティが空文字か null ならば背景色を青に変更
<Style TargetType="{x:Type Button}"> <Setter Property="Background" Value="Red"/> <Style.Triggers> <!-- Name が空文字か null なら背景色を青に --> <DataTrigger Binding="{Binding Name}" Value=""> <Setter Property="Background" Value="Blue"/> </DataTrigger> <DataTrigger Binding="{Binding Name}" Value="{x:Null}"> <Setter Property="Background" Value="Blue"/> </DataTrigger> </Style.Triggers> </Style>
自身のプロパティを基に判断する Trigger と異なり、DataTrigger はバインディングされたソースの値を基に判断する。 つまりデータバインディングに特化したトリガーであり、扱えるプロパティの自由度が高い。 複数のバインドソースの状態に基づいて変更を適用できる MultiDataTrigger が存在する。詳細は割愛。

EventTrigger

特定のイベント(主にユーザー操作)を契機とした動作を規定できる。詳細はリンク先を参照。